class Mediator {
  constructor(a, b) {
    this.a = a;
    this.b = b;
  }
  setA() {
    let number = this.b.number;
    this.a.setNumber(number * 100);
  }
  setB() {
    let number = this.a.number;
    this.b.setNumber(number / 100);
  }
}

class A {
  constructor() {
    this.number = 0;
  }
  // 第二个参数 m 是中介者
  setNumber(num, m) {
    this.number = num;
    // 如果传入了中介者，就使用中介者提供的方法修改
    if (m) {
      m.setB();
    }
  }
}

class B {
  constructor() {
    this.number = 0;
  }
  // 第二个参数 m 是中介者
  setNumber(num, m) {
    this.number = num;
    // 如果传入了中介者，就使用中介者提供的方法修改
    if (m) {
      m.setA();
    }
  }
}

// 测试
let a = new A();
let b = new B();
let m = new Mediator(a, b);
a.setNumber(100, m);
console.log(a.number, b.number);
b.setNumber(100, m);
console.log(a.number, b.number);
